package business

// MultiJokePrompt 生成多个笑话的提示词
// 参数count: 要生成的笑话数量
// 参数style: 可选的笑话风格
// 参数topic: 可选的笑话主题
// 返回一个引导模型生成指定数量笑话的提示文本
func MultiJokePrompt(count int, style string, topic string) string {
	// 默认数量为1
	if count <= 0 || count > 10 {
		count = 1
	}

	prompt := "你是一位幽默风趣的笑话创作者。\n"

	// 如果指定了主题
	if topic != "" {
		prompt += "请围绕\"" + topic + "\"主题，"
	}

	prompt += "请创作" + string(rune(count+'0')) + "个简洁有趣的笑话。\n"
	prompt += "每个笑话内容积极健康，笑话间要有差异。\n"

	// 如果指定了笑话风格
	if style != "" {
		prompt += "笑话风格：" + style + "\n"
	}

	prompt += "请用数字序号列出每个笑话。"
	return prompt
}

// JokeIntentPrompt 用于识别用户笑话相关意图的提示词
// 参数userInput: 用户的原始输入内容
// 返回一个引导模型分析用户意图并输出结构化JSON的提示文本
func JokeIntentPrompt(userInput string) string {
	return `
你是一个精确的意图识别器，专门分析用户的笑话请求。

请分析以下用户输入，判断是否是笑话请求，如果是，请提取：
- 意图类型
- 笑话主题（如果有）
- 笑话数量（如果有，默认为1）
- 笑话风格（如果有）

意图类型只能是：random_joke（随机笑话）、topic_joke（主题笑话）、multi_joke（多个笑话）或unknown。

用户输入："""` + userInput + `"""

请以严格的JSON格式输出结果，不要添加任何其他文字：
{"type": "意图类型", "topic": "主题内容", "count": 数量, "style": "笑话风格"}

注意：
- count默认为1
- topic未知则为空字符串,随机生成一个
- style未知则为空字符串，随机生成一个
- 当意图是multi_joke时，必须提取数量到count字段
- 如果能识别出笑话风格（如冷笑话、职场笑话等），请提取到style字段
- 所有不需要的字段请使用空字符串("")或0填充
- 只输出JSON对象，不要包含任何其他文本

用户输入："` + userInput + `"
`
}
